import java.util.Arrays;
import java.util.Comparator;
import java.util.concurrent.Callable;

//使用comparable接口进行排序
public class InterfaceExample {
    //下面的代码就是写出的自己的数组排序
    public static void MySort(Comparable[] comparable){

        //这个和冒泡排序有点像
                    for (int i = 0;i < comparable.length - 1;i ++){
                        for (int j = 0; j < comparable.length - 1 - i; j++) {
                            if (comparable[j].compareTo(comparable[j + 1]) > 0) {//这个比较的是String长度
                                Comparable tmp = comparable[j];
                                comparable[j] = comparable[j + 1];
                                comparable[j + 1] = tmp;
                }
            }
        }
    }

    //自己写一个数组排序的方法
    public static void main(String[] args) {
        Student[] students = new Student[3];
        students[0] = new Student("zhangsan",1);
        students[1] = new Student("lisi",4);
        students[2] = new Student("wangwu",3);

        System.out.println(Arrays.toString(students));
        MySort(students);
        System.out.println(Arrays.toString(students));
    }
    //尝试一下根据类中的String类型的字段name进行比较
    public static void main2(String[] args) {
        Student[] students = new Student[3];
        students[0] = new Student("zhangsan",1);
        students[1] = new Student("lisi",4);
        students[2] = new Student("wangwu",3);

        System.out.println(Arrays.toString(students));
        Arrays.sort(students);
        System.out.println(Arrays.toString(students));
    }

    public static void main1(String[] args) {
        //根据类中的某个字段进行该类型的数组排序这里是age
        Student[] students = new Student[3];
        students[0] = new Student("zhangsan",1);
        students[1] = new Student("lisi",4);
        students[2] = new Student("wangwu",3);

        System.out.println(Arrays.toString(students));
        Arrays.sort(students);
        System.out.println(Arrays.toString(students));
        //上面的这种写法可以实现目的，但是没办法理解到底是怎么实现的
    }
    /*
    写完接口发现问题，comparable接口有局限性！
    一旦这个类写死了什么样的比较方式（就比如说这里的age），
    后期不能进行随意更改，可以理解为，写死的就是一个默认的比较方式
     */
}
